在實踐 Recovery 時,按 TDD 的流程,我們要先給一個壞掉的測試。這裡既然我們已經決定要用 Memento 設計模式了,我們步伐就會稍微大一點。我們直接把我們希望最終的儲存與還原的流程直接寫出來,於是我們就有了第一個壞掉的測試。
第二步我們要做的事情是把 Base Game 給儲存並還原回來。對於 Base Game來說,最重要的就是 Game Flow 裡面的滾輪的當前狀態。因為這個遊戲是 5 × 3 的遊戲,所以我們會得到一個長度為 5 的 List,其中每個元素都代表每個滾輪現在的位置。我們把這個東西放到備忘錄裡面,然後在最後 Restore 回來時把這五個數字塞回遊戲裡的每個滾輪當中,於是就完成了 Bass Game 的 Restore。
第三步我們要把遊戲的狀態也把它儲存下來,於是我們儲存了 Free Game Count。如果是 0,則代表現在是 Base Game,大於 0 則代表現在是 Free Game。那把這個東西也儲存到備忘錄之中,當 Restore 回來時,遊戲的狀態就不會錯了
最後一步我們才去處理 Free Game 的 Position。在這個範例中,我們的 Free Game 是3 × 3 的遊戲,於是我們得到的 Positions 應該是一個長度為 3 的 Integer List。我們一樣就把它放到備忘錄中儲存下來,並且在待會 Restore 回來時,一個一個滾輪把他們的 Position 換成當初儲存下來的 Position。
至此,Slot 遊戲當中三個主要特徵 Base Game Positions,Free Game Positions,以及 Free Game Count 就被我們儲存下來並且也確實的 Restore 了回來。
這就是我們呈現的 Recovery 解決方案。